<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>this指向问题</title>
</head>
<body>
    <button>点击</button>
    <!-- this 的指向在函数定义的时候是确定不了的，只有在函数执行的时候才能确定 this 到底指向谁，
        一般情况下 this 的最终指向昂的是呢个 调用它的对象 -->
        <script>
            // 1 在全局作用域或者普通函数中 this 指向全局对象 window （注意定时器里面的 this 指向 window）
            console.log(this);
            function fn(){
                console.log(this);

            }
            fn();

            setTimeout(function(){
                console.log(this);
            })
            // 2 方法调用中谁调用 this 指向谁
            var o = {
                sayHi:function(){
                    console.log(this);  // this 指向的是 o 这个对象  谁调用这个函数就指向谁
                }
            }
            o.sayHi();

            var btn = document.querySelector('button');
            btn.onclick = function(){
                console.log(this);   // this 指向的是btn这个按钮对象
            }
            // 3 构造函数中 this 指向构造函数的实例
            function Fun(){
                console.log(this);  //this指向的是 Fun 实例对象
            }
            var fun = new Fun();
        </script>

</body>
</html>